1. Technical Field
The present invention relates in general to a timeout value setting for distributed computing environment (DCE) applications and, in particular, to an adaptive timeout value setting for DCE applications wherein the timeout value setting is adapted and adjusted according to environmental factors and communication conditions between a client and a server.
2. Description of the Related Art
In a computer network, communications between a client and a server are well known in the art. A DCE Remote Procedure Call (RPC) provides applications with an Application Programming Interface (API), such as rpc_mgmt_set_com_timeout, to set the timeout value for communications between a client and a server. The timeout value is set at a particular value when the client code populates the binding handle (i.e. during client code compilation time) used to communicate with the server and is generally fixed at that particular value throughout the entire communication session. If the timeout value is not set by the client, a default value is set during the RPC runtime. The most current DCE version of the timeout value provides features to set the default timeout value by the application client at runtime (i.e. such as using environment variables).
In either case, the setting of a timeout value is and done ahead of time by the client (i.e. either at client code compilation time or runtime). This set value is then used through the entire communication session. The static timeout value setting results in drawbacks because it is limited in its setting and it does not consider significant environmental factors and communication conditions that should drive the occurrences of a timeout. For example, in the client/server environment, a server""s response may be reduced considerably due to an increasing workload or network congestion. The client""s original timeout value may not have been set long enough to accommodate the performance change, and a pre-mature exiting at the client side when the set timeout value has been reached may result. Furthermore, if the client program is written to try to connect again or if the user attempts to re-run the client code under this case, then the attempt will further contribute to the already congested network traffic or to the server""s workload, and the attempt may very well cause another timeout at the client side. On the other hand, if the timeout value has been reset to a large value by either the client application or local environment variables responding to the timeout condition, disadvantages may still exist. For example, when a server""s workload becomes less busy or the network becomes less congested, then the timeout being set at a large timeout value causes the timeout mechanism to be less responsive. In other words, the client may need to wait for an excessive time period before reaching a timeout when the server fails to respond for any reason.
It would therefore be advantageous and desirable to provide an adaptive timeout value setting for DCE applications wherein the timeout value setting is adapted and adjusted according to environmental factors and communication conditions between each client/server pair. It would also be advantageous and desirable to provide an adaptive timeout value that takes into consideration the communication time between a client and a server in each client/server pair in determining and setting a timeout value for it. It would also be advantageous and desirable to provide such an adaptive timeout value setting that is implemented in DCE RPC runtime and that is transparent to any DCE application client and any DCE application server. It would further be advantageous and desirable to adjust the timeout value for each client/server pair in a dynamic fashion so that the client is able to be more adaptive to real environment changes and so that the server""s performance is not degraded due to ineffective timeouts. It would still also be advantageous and desirable to allow the distributed computing environment instead of the client to be responsible for the timeout value setting so that it does not have to be blindly and indiscriminately determined. It would still further be advantageous and desirable to avoid having to incur any programming and administration overhead for setting timeout values by DCE applications. It would still also be advantageous and desirable to determine a reasonable timeout value based and built on the infrastructure of the client/server applications rather than based on the client""s program or the user running the client. It would still further be advantageous and desirable to dynamically set or adjust the client""s timeout value based on the server""s workload and/or the network traffic in a programmatic way.
It is therefore one object of the present invention to provide an adaptive timeout value setting for DCE applications wherein the timeout value setting is adapted and adjusted according to environmental factors and communication conditions between each client/server pair.
It is another object of the present invention to provide an adaptive timeout value that takes into consideration the communication time between a client and a server in each client/server pair in determining and setting a timeout value for it.
It is another object of the present invention to provide such an adaptive timeout value setting that is implemented in DCE RPC runtime and that is transparent to any DCE application client and any DCE application server.
It is a further object of the present invention to adjust the timeout value for each client/server pair in a dynamic fashion so that the client is able to be more adaptive to real environment changes and so that the server""s performance is not degraded due to ineffective timeouts.
It is still another object of the present invention to allow the distributed computing environment instead of the client to be responsible for the timeout value setting so that it does not have to be blindly and indiscriminately determined.
It is still a further object of the present invention to avoid having to incur any programming and administration overhead for setting timeout values by DCE applications.
It is still also another object of the present invention to determine a reasonable timeout value based and built on the infrastructure of the client/server applications rather than based on the client""s program or the user running the client.
It is still a further object of the present invention to dynamically set or adjust the client""s timeout value based on the server""s workload and/or the network traffic in a programmatic way.
The foregoing objects are achieved as is now described. An adaptive timeout value setting for DCE applications is determined, wherein the timeout value setting is adapted and adjusted according to environmental factors and communication conditions between a client and a server. The adaptive timeout value setting takes into consideration the communication time between each client/server pair in determining and setting a timeout value for each pair. The timeout value for each client/server pair is adjusted in a dynamic fashion so that the client is able to be more adaptive to real environment changes and so that the server""s performance is not degraded due to ineffective timeouts. The present system and method implements and provides an adaptive timeout value setting for DCE applications. At least one response time, which is to at least one remote procedure call that each has a binding handle, is tracked. The at least one remote procedure call is from at least one client system and the at least one response time is based on at least one time of at least one server system responding to the at least one remote procedure call. An optimal timeout value is calculated from the at least one response time, and a timeout value of the binding handle is reset as the optimal timeout value.
The above as well as additional objects, features, and advantages of the present invention will become apparent in the following detailed written description.